package com.example.agriculturemachine.ui.activity;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;

import com.example.agriculturemachine.R;
import com.example.agriculturemachine.base.BaseActivity;
import com.example.agriculturemachine.untils.LogUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import butterknife.BindView;

public class LoginActivity extends BaseActivity {


    private static final String TAG = "LoginActivity";
    @BindView(R.id.et_phoneNum)
    public EditText et_phoneNum;
    @BindView(R.id.et_password)
    public EditText et_password;
    @BindView(R.id.tv_getMsg)
    public TextView tv_getMsg;
    @BindView(R.id.btn_login)
    public Button btn_login;
    @BindView(R.id.check_agree)
    public CheckBox mCheckBox;

    private int i = 30;//计时器
    @Override
    protected int getLayoutResId() {
        return R.layout.activity_login;
    }

    @Override
    protected void initView() {


//        //启动短信验证SDK
//        MobSDK.init(this,APPKEY,APPSECRET);
//        MobSDK.submitPolicyGrantResult(true);
//        // 启动短信验证sdk
//        EventHandler eventHandler = new EventHandler() {
//            @Override
//            public void afterEvent(int i, int i1, Object o) {
//                Message message = new Message();
//                message.arg1 = i;
//                message.arg2 = i1;
//                message.obj = o;
//                handler.sendMessage(message);
//            }
//            //注册回调监听接口
//        };
//        SMSSDK.registerEventHandler(eventHandler);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
            String channelId="identifying code";
            String channelName="验证码";
            int importance= NotificationManager.IMPORTANCE_MAX;
            //创建渠道
            createNotificationChannel(channelId,channelName,importance);
        }



    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    private void createNotificationChannel(String channelId, String channelName, int importance) {
        NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
        channel.enableVibration(true);
        channel.setVibrationPattern(new long[]{0,100,100,100});
        channel.enableLights(true);
        channel.setLightColor(Color.GREEN);
        channel.setShowBadge(true);
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);

    }

    @Override
    protected void initEvent() {
        tv_getMsg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CountDownTimer timer = new CountDownTimer(30000, 1000) {

                    @Override
                    public void onTick(long millisUntilFinished) {
                        tv_getMsg.setEnabled(false);
                        tv_getMsg.setText("重新获取("+millisUntilFinished/1000+"s)");
                    }

                    @Override
                    public void onFinish() {
                        tv_getMsg.setEnabled(true);
                        tv_getMsg.setText("发送验证码");

                    }
                }.start();
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                        PendingIntent pendingIntent = PendingIntent.getActivity(LoginActivity.this, 0, intent, 0);

                        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                        Notification notification = new NotificationCompat.Builder(LoginActivity.this, "identifying code")
                                .setContentTitle("您的验证码是6536")
                                .setContentText("有效期为10分钟")
                                .setWhen(System.currentTimeMillis())
                                .setSmallIcon(R.mipmap.ic_launcher)
                                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                                .setAutoCancel(true)

                                .addAction(R.mipmap.ic_launcher,"回复",pendingIntent)
                                .addAction(R.mipmap.ic_launcher,"跳转",pendingIntent)
                                .build();
                        manager.notify(1,notification);
                    }
                }, 3000);//3秒后执行Runnable中的run方法



//                BmobSMS.requestSMSCode(account, "自定义短信模板的名字", new QueryListener<Integer>() {
//                    @Override
//                    public void done(Integer integer, BmobException e) {
//                        if(e==null){
//                            Toast.makeText(LoginActivity.this,"验证码已发送",Toast.LENGTH_SHORT).show();
//                        }else {
//                            Toast.makeText(LoginActivity.this,"发送验证码失败: "+e.getErrorCode()+"-"+e.getMessage(),Toast.LENGTH_SHORT).show();
//                        }
//                    }
//                });


            }
        });
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String account=et_phoneNum.getText().toString().trim();
                LogUtils.d(LoginActivity.this,"account--->"+account);
                boolean phoneCheck = PhoneCheck(account);
                LogUtils.d(LoginActivity.this,"phoneCheck--->"+phoneCheck);
                String identifyCode=et_password.getText().toString().trim();
                boolean identifyCodeCheck=identifyCode.equals("6536");
                boolean isChecked = mCheckBox.isChecked();
                LogUtils.d(LoginActivity.this,"identifyCodeCheck--->"+identifyCodeCheck);
                if(phoneCheck&&identifyCodeCheck){
                    if(isChecked==true){
                        Toast.makeText(LoginActivity.this,"登录成功！",Toast.LENGTH_SHORT).show();
                        startActivity(new Intent(LoginActivity.this,MainActivity.class));
                    }else {
                        Toast.makeText(LoginActivity.this,"请勾选用户协议！",Toast.LENGTH_SHORT).show();
                    }

                }else{
                    Toast.makeText(LoginActivity.this,"输入的手机号或验证码有误！",Toast.LENGTH_SHORT).show();
                }
            }
        });



    }
    /**
     * 手机号码检测
     * @param phone：输入的号码
     * @return true -->>号码正确，false-->>号码不正确
     */
    public static boolean PhoneCheck(String phone){
        String ChineseMainland = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[3,5,6,7,8])" + "|(18[0-9])|(19[8,9]))\\d{8}$";
        String HongKong = "^(5|6|8|9)\\d{7}$";

        Matcher C = Pattern.compile(ChineseMainland).matcher(phone);
        Matcher H = Pattern.compile(HongKong).matcher(phone);
        return C.matches() || H.matches();
    }



    //    Handler handler =new Handler(){
//        @Override
//        public void handleMessage(@NonNull Message msg) {
//            if (msg.what == -9) {
//                tv_getMsg.setText("重新发送(" + i + ")");
//            } else if (msg.what == -8) {
//                tv_getMsg.setText("获取验证码");
//                tv_getMsg.setClickable(true);
//                i = 30;
//            } else {
//                int i = msg.arg1;
//                int i1 = msg.arg2;
//                Object o = msg.obj;
//                if (i1 == SMSSDK.RESULT_COMPLETE) {
//                    // 短信注册成功后，返回MainActivity,然后提示
//                    if (i == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//                        Toast.makeText(LoginActivity.this, "提交验证码成功", Toast.LENGTH_SHORT).show();
////                        Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
////                        Bundle bundle = new Bundle();
////                        bundle.putString("userName", et_phoneNum.getText().toString().trim());
////                        intent.putExtras(bundle);
////                        startActivity(intent);
//
//                    } else if (i == SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE) {
//                        Toast.makeText(LoginActivity.this, "正在获取验证码", Toast.LENGTH_SHORT).show();
//                    }
//                }
//            }
//        }
//    };



//    /**
//     * 判断手机号码是否合理
//     *
//     * @param phoneNums
//     */
//    private boolean judgePhoneNums(String phoneNums) {
//        if (isMatchLength(phoneNums, 11)
//                && isMobileNO(phoneNums)) {
//            return true;
//        }
//        Toast.makeText(this, "手机号码输入有误！", Toast.LENGTH_SHORT).show();
//        return false;
//    }
//    /**
//     * 判断一个字符串的位数
//     *
//     * @param str
//     * @param length
//     * @return
//     */
//    public static boolean isMatchLength(String str, int length) {
//        if (str.isEmpty()) {
//            return false;
//        } else {
//            return str.length() == length ? true : false;
//        }
//    }
//    /**
//     * 验证手机格式
//     */
//    public static boolean isMobileNO(String mobileNums) {
//        /*
//         * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
//         * 联通：130、131、132、152、155、156、185、186 电信：133、153、180、189、（1349卫通）
//         * 总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
//         */
//        String telRegex = "[1][358]\\d{9}";// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
//        if (TextUtils.isEmpty(mobileNums))
//            return false;
//        else
//            return mobileNums.matches(telRegex);
//    }
//    @Override
//    protected void onDestroy() {
//        //反注册回调监听接口
//        SMSSDK.unregisterAllEventHandler();
//        super.onDestroy();
//    }

}